Symbol data = PORTB.7  'dato de los decimales
Symbol clock = PORTB.6
Dim d As Byte	'para la aplicacion for de los decimales
Dim u As Byte	'para la aplicacion for de las unidades
Dim i As Byte	'para la aplicacion for de envio de datos
Dim e As Byte	'para la aplicaciof for de envio de datos
Dim dec As Byte	'almacenaremos los datos decimales
Dim und As Byte	'almacenaremos los datos de las unidades
TRISA = 0	'puerto a como salidas
TRISB = 0	'puerto b como salidas
PORTA = 0	'puerto a apagado
PORTB = 0	'puerto b apagado
 
main:
For d = 0 To 9    
dec = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), d  'buscamos el decimal
For u = 0 To 9  'unidades del 0 al 9
und = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), u  'buscamos la unidad
PORTA.0 = 0  'apagamos porta para enviar los datos
Gosub enviar2  'enviamos primero los datos de las unidades
Gosub enviar1  'luego enviamos los datos de los decimales
PORTA.0 = 1	'encendemos los display
WaitMs 100	'esperamos 100ms para ver el cambio rapido
Next u 'siguiente unidad
Next d 'cuando acaba de escribir todas las unidades escribe un decimal mas y vuelve a escribir 9 unidades
Goto main 'hacemos un bucle
End  'finalizamos el programa  
 
                 
enviar1:  'sub enviar1, enviamos los datos decimales
For i = 0 To 7	        'enviamos 8 bit de datos
If dec.0 = 0 Then	'si el bit 0 de la variable dec es igual a 0
data = 0	        'envia un cero logico
clock = 0	        'porque el display ahora se enciende con un uno logico
WaitUs 2	        'en el registro de desplazamiento
clock = 1	'
WaitUs 2	'
Else
data = 1	'envia  un uno logico
clock = 0	'...lo explicado antes
WaitUs 2	'
clock = 1	'
WaitUs 2	'
Endif 

dec = ShiftRight(dec, 1)    'desplazamos un bit hacia la derecha
Next i                      'next, para enviar el siguiente bit
dec = LookUp(252, 96, 218, 242, 102, 182, 190, 224, 254, 246), d  'como la variable dec ha sido modificada debemos hacer que sea como anteriormente porque sino solo nos enviara 0
Return                      'volvemos a la rutina  
 
 
                 
enviar2:              'sub enviar2, enviamos los datos de las unidades
For e = 0 To 7	      'enviamos 8 bit de datos
If und.0 = 0 Then     'si el bit 0 de la variable und = 0
data = 0	      'envia un cero logico
clock = 0	      'por que el display se enciende con un uno logico
WaitUs 2	      'en el registro de desplazamiento
clock = 1	      '
WaitUs 2	      '
Else	
data = 1	      'envia un uno logico
clock = 0	      '...lo explicado anteriormente
WaitUs 2	'
clock = 1	'
WaitUs 2	'
Endif 
und = ShiftRight(und, 1) 'desplazamos un bit hacia la derecha
Next e 'next para enviar el siguiente bit
Return 'volvemos a la rutina      
 